package com.yc.jdbc.d1216;

// 模板模式示例
public class TemplateDemo {
    public static void main(String[] args) {
        A a1 = new B();
        A a2 = new C();
        a1.action();
        a2.action();
    }
}


abstract class A {
    abstract void begin();
    abstract void run();
    abstract void end();

    final void action(){
        // 模板方法
        begin();
        run();
        end();
    }
}

class B extends A {

    @Override
    void begin() {
        System.out.println("开始游戏");
    }

    @Override
    void run() {
        System.out.println("玩游戏");
    }

    @Override
    void end() {
        System.out.println("游戏结束了");
    }
}

class C extends A {

    @Override
    void begin() {
        System.out.println("开始工作");
    }

    @Override
    void run() {
        System.out.println("辛苦干活");
    }

    @Override
    void end() {
        System.out.println("收工回家");
    }
}